package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;

import javax.validation.constraints.NotEmpty;

@Schema(description = "管理后台 - ERP 供应商 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ErpSupplierRespVO {

    @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5384")
    @ExcelProperty("供应商编号")
    private Long id;

    @Schema(description = "供应商企业全称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("供应商企业全称")
    private String name;

    @Schema(description = "社会信用代码", example = "123")
    private String complainCode;

    @Schema(description = "注册人姓名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "注册人姓名不能为空")
    private String registryName;

    @Schema(description = "注册人电子邮箱", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "注册人电子邮箱不能为空")
    private String registryEmail;

    @Schema(description = "手机号码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("手机号码")
    private String mobile;

    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
//    @ExcelProperty("密码")
    private String password;

    @Schema(description = "企业类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty(value = "企业类型", converter = DictConvert.class)
    @DictFormat("complain_type") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer type;

    @Schema(description = "纳税规模", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty(value = "纳税规模", converter = DictConvert.class)
    @DictFormat("tax_scale") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer taxScale;

    @Schema(description = "营业执照含三证合一", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("营业执照含三证合一")
    private String businessPic;

    @Schema(description = "法人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("法人姓名")
    private String legalName;

    @Schema(description = "法人身份证", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("法人身份证")
    private String legalNo;

    @Schema(description = "食品经营许可证")
    @ExcelProperty("食品经营许可证")
    private String foodPic;

    @Schema(description = "税盘照片")
    @ExcelProperty("税盘照片")
    private String taxPlatePic;

    @Schema(description = "注册资本")
    @ExcelProperty("注册资本")
    private String registeredCapital;

    @Schema(description = "企业联系人", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("企业联系人")
    private String companyContact;

    @Schema(description = "企业联系人邮箱", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("企业联系人邮箱")
    private String companyEmail;

    @Schema(description = "企业联系电话", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("企业联系电话")
    private String companyTelephone;

    @Schema(description = "企业经营范围")
    @ExcelProperty("企业经营范围")
    private String companyScope;

    @Schema(description = "企业经营地址")
    @ExcelProperty("企业经营地址")
    private String companyAddress;

    @Schema(description = "审核状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty(value = "审核状态", converter = DictConvert.class)
    @DictFormat("complan_status") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer status;

    @Schema(description = "开户银行", example = "张三")
    @ExcelProperty("开户银行")
    private String bankName;

    @Schema(description = "收款账号", example = "5506")
    @ExcelProperty("收款账号")
    private String bankAccount;

    @Schema(description = "开户地址")
    @ExcelProperty("开户地址")
    private String bankAddress;

    @Schema(description = "创建者")
    @ExcelProperty("创建者")
    private String creator;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新者")
    @ExcelProperty("更新者")
    private String updater;

    private String exceptionRemark;

    private Integer score;

}
